/***************************************************************
/结合网上流传的famebuffer操作的示例以及tslib中ts_test.c中的函数设计的供
/自己使用.提供对framebuffer绘制文字,直线,方框,填充方框,简单按钮的功能.
/
/创建时间:2013-5-12
/
/作者:陈仕杰
/
/
/**************************************************************/

#ifndef _FRAMEBUFFER_OUTPUT_H_
#define _FRAMEBUFFER_OUTPUT_H_


#define FONT_8X8 0
#define FONT_8X16 1
#define FONT_16X16 2
#define FONT_32X32 3
#define HZK_FONT_16X16 4
#define HZK_FONT_32X32 5


struct ts_button {//抄袭的tslib库中的结构体
    int x, y, w, h;//按钮左上角坐标,宽高
    char *text;//要显示的文本
    //下面的是我自己添加的
    unsigned rect_colidx;//边框颜色序号
    unsigned fillrect_colidx;//填充区域颜色序号
    unsigned string_colidx;//文字颜色序号
#define BUTTON_ACTIVE 0x00000001
};

typedef struct{
    int screen_width;
    int screen_height;
}screen_info_t;


/*打开famebuffer
  @param char *pathname famebuffer的路径
  @param int -1:失败
              0:成功
*/
extern int fb_open(char *pathname,screen_info_t* scr_info);

/*关闭famebuffer
  @param int -1:失败
              0:成功
*/
extern int fb_close();

/*清空famebuffer
*/
extern void fb_clean();

/*绘制字符串
  如果是绘制汉字,则要根据汉字在字模文件中的序号来指定数组里每个字节的值,末尾要加上0x00,第一个词不能是0x00
  @param int x x坐标
  @param int y y坐标
  @param char *s 字符串
  @param unsigned colidx 颜色序号
*/
extern void put_string(int x, int y, char *s, unsigned colidx);

/*以字符串的中心点为坐标绘制字符串
  @param int x x坐标
  @param int y y坐标
  @param char *s 字符串
  @param unsigned colidx 颜色序号
*/
extern void put_string_center(int x, int y, char *s, unsigned colidx);

/*设置字体
  @param int font_size 字模大小
*/
extern void set_font(int font_size);

/*绘制直线
  @param int x1 起始点x坐标
  @param int y1 起始点y坐标
  @param int x2 终点x坐标
  @param int y2 终点y坐标
  @param unsigned colidx 颜色序号
*/
extern void line (int x1, int y1, int x2, int y2, unsigned colidx);

/*绘制方框
  @param int x1 左上角x坐标
  @param int y1 左上角y坐标
  @param int x2 右下角x坐标
  @param int y2 右下角y坐标
  @param unsigned colidx 颜色序号
*/
extern void rect (int x1, int y1, int x2, int y2, unsigned colidx);

/*绘制方形填充区域
  @param int x1 左上角x坐标
  @param int y1 左上角y坐标
  @param int x2 右下角x坐标
  @param int y2 右下角y坐标
  @param unsigned colidx 颜色序号
*/
extern void fillrect (int x1, int y1, int x2, int y2, unsigned colidx);

/*绘制按钮
  @param struct ts_button *button 按钮信息结构体
*/
extern void button_draw (struct ts_button *button);
extern void hzk_put_char_16x16(int x, int y, int c, int colidx);
extern void hzk_put_char_32x32(int x, int y, int c, int colidx);
extern void gethzk(char c1, char c2);

#endif
